Meteor অ্যাপ্লিকেশনে background jobs পরিচালনা করার জন্য Meteor Jobs প্যাকেজ ব্যবহার করা হয়। এটি ব্যাকগ্রাউন্ডে কাজ করতে সক্ষম, যাতে CPU-intensive বা long-running tasks ক্লায়েন্ট বা সার্ভারের প্রধান থ্রেডকে ব্লক না করে, এবং অ্যাপ্লিকেশনটি দ্রুত এবং স্নিগ্ধভাবে কাজ করতে থাকে।
Meteor Jobs প্যাকেজটি একটি 큯ুই (queue) ম্যানেজমেন্ট সিস্টেম প্রদান করে, যা ব্যাকগ্রাউন্ডে কাজগুলো অ্যাসিঙ্ক্রোনাসভাবে সম্পাদন করতে সক্ষম। এটি খুবই কার্যকরী যখন আপনার অ্যাপ্লিকেশনে দীর্ঘ-running বা ভীষণ সময়সাপেক্ষ কাজ করতে হয়, যেমন ইমেইল পাঠানো, ফাইল প্রসেসিং, অথবা বড় পরিমাণে ডেটা আপডেট করা।
ধাপ ১: Meteor Jobs প্যাকেজ ইনস্টল করা
প্রথমে, Meteor Jobs প্যাকেজটি ইনস্টল করতে হবে। এটি npm বা meteor add এর মাধ্যমে ইনস্টল করা যেতে পারে।
meteor add msavin:jobs
এটি msavin:jobs প্যাকেজটি আপনার Meteor প্রজেক্টে যোগ করবে।
ধাপ ২: Job Queue তৈরি করা
এখন আপনি Jobs তৈরি করতে পারেন। প্যাকেজটি Job Queue ম্যানেজ করে, এবং আপনি কোন কাজটি রান করতে চান সেটা 큯ুইতে যোগ করতে পারেন।
import { Jobs } from 'meteor/msavin:jobs';
// একটি ব্যাকগ্রাউন্ড জব তৈরি করা
Jobs.registerJob('sendEmail', function (data) {
this.processed(); // কাজ শেষ
console.log(`Email sent to ${data.email}`);
// এখানে ইমেইল পাঠানোর কোড লিখুন
});
এখানে, sendEmail নামক একটি কাজ তৈরি করা হয়েছে, যা ব্যাকগ্রাউন্ডে রান হবে। this.processed() এর মাধ্যমে কাজ সম্পূর্ণ হওয়ার সিগন্যাল পাঠানো হচ্ছে।
ধাপ ৩: Job Queue তে কাজ যোগ করা
আপনি যখন একটি কাজ তৈরি করেছেন, তখন আপনি সেই কাজটি job queue তে যোগ করতে পারবেন।
Jobs.enqueue('sendEmail', { email: 'user@example.com' });
এটি একটি job queue তে যোগ করবে, যা পরে ব্যাকগ্রাউন্ডে চালানো হবে। এখানে sendEmail নামক কাজটি প্রক্রিয়া করবে এবং ইমেইল ঠিকানা পাঠাবে।
ধাপ ৪: Job Execution Options
Meteor Jobs প্যাকেজটি আপনাকে বিভিন্ন ধরণের execution options দেয় যেমন, কতটা সময় কাজটি চলতে হবে, retry attempts, এবং কাজটি কবে শেষ হবে।
Example:
Jobs.registerJob('sendEmail', function (data) {
const { email } = data;
// এক্সিকিউশনের আগে কিছু টাস্ক
if (!email) {
throw new Meteor.Error('no-email', 'Email is required');
}
this.timeout(10000); // 10 সেকেন্ডে কাজটি শেষ হতে হবে
this.retry({
retries: 5, // 5 বার রিট্রাই করবে
wait: 3000 // 3 সেকেন্ড পর পর রিট্রাই করবে
});
this.processed(); // কাজ সম্পন্ন হলে
console.log(`Sending email to ${email}`);
});
এখানে, this.timeout() এবং this.retry() ব্যবহার করা হয়েছে, যা জবের এক্সিকিউশনের সময়সীমা এবং রিট্রাই পলিসি নির্ধারণ করে।
ধাপ ৫: Job Queue ম্যানেজ করা
Job Queue এ থাকা কাজগুলো মনিটর এবং ম্যানেজ করা যায়। Job status (যেমন pending, processed, failed, ইত্যাদি) দেখে কাজের অবস্থা নির্ধারণ করা সম্ভব।
// সকল pending job দেখতে
Jobs.find({ status: 'pending' }).fetch();
// একটি নির্দিষ্ট job এর অবস্থা দেখতে
Jobs.findOne(jobId);
ধাপ ৬: Job Results এবং Error Handling
Job এ কাজ করার সময় যদি কোনো সমস্যা আসে, তবে error হ্যান্ডেলিং প্রয়োজন। আপনি বিভিন্ন ধরণের callback বা error ম্যানেজমেন্ট ব্যবহার করতে পারেন।
Jobs.registerJob('sendEmail', function (data) {
try {
// কাজের কোড
if (!data.email) {
throw new Error('Email is required');
}
// ইমেইল পাঠানোর কোড
} catch (error) {
console.error('Error sending email:', error);
this.failed({ error: error.message });
}
});
এখানে, this.failed() ব্যবহার করা হয়েছে, যা কাজটি ব্যর্থ হলে তাকে failed স্ট্যাটাস দিয়ে ট্র্যাক করতে সাহায্য করে।
ধাপ ৭: Job Execution টেস্ট করা
কোনো কাজ চলে কিনা এবং Job Queue সঠিকভাবে কাজ করছে কিনা তা টেস্ট করতে, আপনি enqueue ফাংশন ব্যবহার করতে পারেন এবং তারপর কনসোল লগে ফলাফল দেখতে পারেন।
Jobs.enqueue('sendEmail', { email: 'user@example.com' });
আপনি লগ দেখতে পারবেন এবং জানবেন যে কাজটি সফলভাবে রান হয়েছে কিনা।
সারাংশ
Meteor এর Jobs প্যাকেজ ব্যাকগ্রাউন্ড কাজগুলো ব্যবস্থাপনা করার জন্য একটি শক্তিশালী টুল। এটি CPU-intensive tasks এবং long-running processes যেমন ইমেইল পাঠানো, ডেটা প্রসেসিং, অথবা ফাইল আপলোড/ডাউনলোডের মতো কাজ ব্যাকগ্রাউন্ডে পরিচালনা করতে সক্ষম। Jobs.enqueue(), Jobs.registerJob() এর মাধ্যমে আপনি সহজে কাজগুলো ব্যাকগ্রাউন্ডে চলে যেতে পারেন, এবং এর মাধ্যমে আপনার Meteor অ্যাপ্লিকেশনের পারফরম্যান্স এবং ইউজার এক্সপেরিয়েন্স উন্নত করা যায়।
Read more